The present invention relates generally to data communications, and more particularly to a technique by which individual devices connected to a data bus can each transmit data to other devices at a maximum speed.
As xe2x80x9csmartxe2x80x9d devices have proliferated in recent years, a trend is emerging in which everyday electronic devices such as video tape recorders (VTRs), televisions, personal computers, etc., can communicate with one another via connection to a common data bus. Among the many considerations in performing such data communication is the selection of appropriate data transmission speeds. When devices connected to a common bus have differing data communication speed capability, it is necessary to select a data transmission speed at which a transmitting end can transmit data and a receiving device can receive data. Moreover, if there is another apparatus (relay apparatus) between the transmitting and receiving devices, it is necessary to select a data transmission speed at which the relay apparatus can operate.
An international I/O connection standard, namely, the IEEE 1394-1995 serial bus standard, has been promulgated to provide a universal protocol for data communications over a serial bus. This standard defines a digital interface for data communications, thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus. Likewise, a receiving application will receive digital data from the bus rather than analog data, and will therefore not be required to perform A/D conversion.
The IEEE 1394 standard has been adopted to implement an inexpensive high-speed architecture which supports both asynchronous and isochronous format data transfers. Isochronous data transfers are real-time transfers which take place such that the time intervals between significant instances have the same duration at both the transmitting and receiving applications. Each packet of data transferred isochronously is transferred in its own time period. An example of an application for the transfer of data isochronously would be from a video recorder to a television set. The video recorder records images and sounds and saves the data in discrete chunks or packets. The video recorder then transfers each packet, representing the image and sound recorded over a limited time period, during that time period, for display by the television set. Multiple channels are provided for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure. Asynchronous transfers are traditional data transfer operations which take place as soon as possible and transfer an amount of data from a source to a destination.
FIG. 19 is an arrangement of a number of devices with information processing capability connected to IEEE 1394 serial buses. In this example, IEEE 1394 serial buses 10-1 to 10-7 interconnect a personal computer (PC) 1, an integrated receiver/decoder (IRD) 2, a digital video tape recorder (digital VTR) 3, an editor 4, a MiniDisk (MD) deck 5, a monitor 6, a hard disk drive (HDD) 7 for storing image data and audio data, and a server 8. These devices satisfy the IEEE 1394 standard as well as the IEC 61883 standard providing audio-visual (AV) data transmission based on IEEE 1394. Each connected device constitutes a node (i.e., an accessible unit) in IEEE 1394, and each device has its own maximum data communication speed at which it is capable of performing data transmission and reception. According to the IEEE 1394 standard, the maximum speed for any given device can be either 98.308 Mbps, 196.608 Mbps or 392.216 Mbps, designated herein as speeds S100, S200 and S400, respectively. The maximum data communication speed for a particular device is, of course, dependent upon that device""s hardware capabilities. A device can always transmit and receive data at lower speeds; for instance, a device having S400 capability can communicate at S100 or S200 if necessary. Data transmission based on S100 can be performed by all apparatuses satisfying the IEEE 1394 standard. When devices with different maximum communication speeds are connected to a common bus, a transmitting device must transmit at a transmission speed that can be relayed by another device operating as a relay.
FIG. 20 depicts illustrative maximum data communication speeds for the devices of FIG. 19. Thus, PC 1 has a maximum data communication speed of S400; editor 4 has a maximum speed of S200; and so forth. For example, both the MD deck 5 and the digital VTR 3 are S400 devices, and do not connect to an apparatus for transferring data between them, whereby they would always communicate with each other at S400 speed. On the other hand, if a slower device is operating as a relay for a faster device, the faster device cannot communicate through the relay device to other devices at its maximum speed capability. For instance, both the MD deck 5 and the PC 1 can transmit at S400, but since the receiver/decoder 2 with only S200 capability is connected therebetween in their transmission path, they can only communicate at S200 speed.
The IEEE 1394 serial bus standard defines a function called a xe2x80x9cbus managerxe2x80x9d which performs the services of: advanced bus power management; maintenance of a speed map of the data communication speed capabilities of the bus-connected devices; maintenance of a topological map of the connected devices; and bus optimization based on information obtained from the topological map. As part of the bus optimization, the bus manager determines the maximum speeds at which each device is able to transmit data in consideration of the current topology. The bus manager provides each device with maximum data transmission speed information in accordance with the optimization. Thus, a device connected to the IEEE 1394 serial bus sets, based on the information from the bus manager, a data transmission speed for transmission of data to a particular device connected to the bus. In this manner, communication is executed at a maximum data transmission speed enabling communication. When a new device is added to or removed from the bus, the speed map as well as the data speed information provided to the bus-connected devices are updated.
The IEEE 1394 standard also requires an entity called an isochronous resource manager. This entity functions to provide facilities for: allocation of isochronous bandwidth; allocation of channel numbers; and selection of a cycle master.
According to the IEEE 1394 serial bus standard, the existence of the bus manager is optional. However, if a bus manager is absent, the isochronous resource manager exercises a subset of the management responsibilities normally assumed by the bus manager. (The latter circumstance assumes that isochronous traffic is to take place. If there is no isochronous resource manager, no isochronous traffic is allowed.) In this case, if devices on the IEEE 1394 serial bus have S200 or higher speed capability, and a device acting as a relay also has S200 or higher capability, the devices must nevertheless perform initial communication based on S100 because they do not obtain information on a suitable data transmission speed to an apparatus at a receiving end. Thus, when no bus manager exists, a problem arises in that the devices connected to the IEEE 1394 serial bus use a minimum speed to perform data transmission.
It is an object of the present invention to provide a method for transmitting data among devices connected to a common data bus at maximum speeds.
It is another object of the invention to provide a method for transmitting data among devices connected to an IEEE 1394 serial data bus, even if no bus manager is present.
It is still another object of the invention to provide a device connectable to a data bus, which is capable of determining appropriate transmission speeds for transmission of data to other devices connected to the bus.
It is yet another object of the invention to provide an improved method for data communication on a data bus.
In accordance with an illustrative embodiment of the invention, there is provided a method and apparatus for transmitting data among devices connected to a data bus at maximum speeds. Each device may be capable of transmitting data at a number of speeds. A transmitting device first transmits a data packet onto the bus with ID information of a target recipient device, at the maximum transmission speed of the transmitting device. If an acknowledgement signal confirming receipt of the initial data transmission is received from the target recipient device, then the transmission speed for subsequent data transmissions to that device is set to the speed of the just-transmitted data. Otherwise, the transmission speed is reduced and the process is repeated. Once an acknowledgement is received and the speed is set, the speed may be stored in a memory of the transmitting device for use in subsequent data transmissions to the recipient device. The subsequent data transmissions may be asynchronous and/or isochronous data transmissions. The process is repeated to establish maximum suitable transmission speeds to other target recipient devices connected to the bus.
The invention has particular utility when used in conjunction with an IEEE 1394-1995 serial bus interface in the absence of a bus manager. Following a bus reset operation in which the memory of each device containing transmission speed information is cleared, individual devices reestablish appropriate data transmission speeds to each of the other devices by transmitting packets at varying speeds, if necessary, until an acknowledgement is received from each respective device.